home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (PO)
/
Nibble Volume 09, No. 12 (1988-12)(MicroSPARC)(Side A)[a].zip
/
Nibble Volume 09, No. 12 (1988-12)(MicroSPARC)(Side A)[a].po
/
CC.OBJ.S
< prev
next >
Wrap
Text File
|
1996-12-24
|
29KB
|
1,671 lines
*
LST OFF
* CC.OBJ Source Code
* By John Romero
* Copyright(C) 1988
* MicroSPARC, Inc.
* Concord, MA 01742
*
*
* Assembler:
* Merlin Pro
*
*
ORG $8000
*
DRAWX = $300
DRAWY = DRAWX+1
NUM = DRAWY+1
*
VERT = 249
DEPT = VERT+1
HORZ = DEPT+1
WIDT = HORZ+1
TEMP = WIDT+1
HP = 0
SH = 254
*
LEVEL = NUM+1
WAIT = LEVEL+1
KUP = WAIT+1
KDN = KUP+1
KLF = KDN+1
KRT = KLF+1
KFI = KRT+1
RCODE = KFI+1
CITIES = RCODE+1
SCOR2 = CITIES+1
SCOR1 = SCOR2+1
SCOR0 = SCOR1+1
CTRLS = SCOR0+1
SCLR = CTRLS+1
KORJ = SCLR+3
*
*
*
X = $6200
Y = X+1
MX = Y+1
MY = MX+20
XV = MY+20
YV = XV+1
MXV = YV+1
MYV = MXV+20
MSHP = MYV+20
ALIVE = MSHP+20
TIMER = ALIVE+20
TTEMP = TIMER+20
XTIMER = TTEMP+20
XTTEMP = XTIMER+20
CX = XTTEMP+20
CE = CX+10
SX = CE+10
ST = SX+10
BT = ST+10
BX = BT+10
CALIVE = BX+10
SALIVE = CALIVE+10
SE = SALIVE+10
SHX = SE+10
SHY = SHX+20
SHALIVE = SHY+20
SHXV = SHALIVE+20
MET1 = SHXV+20
MESHP = MET1+20
MEX = MESHP+20
MEY = MEX+20
STX = MEY+20
STY = STX+50
FIRE = STY+50
SHAPE = FIRE+1
OSHAPE = SHAPE+1
INDEX = OSHAPE+1
INDEX1 = INDEX+1
ET1 = INDEX1+1
ESHP = ET1+1
AL = ESHP+1
EX = AL+1
EY = EX+1
CET1 = EY+1
CESHP = CET1+10
CEX = CESHP+10
CYCLES = CEX+10
CYC1 = CYCLES+1
BON = CYC1+1
BOMX = BON+20
BOMY = BOMX+20
BET1 = BOMY+20
BEX = BET1+20
BEY = BEX+20
BESHP = BEY+20
STIMER = BESHP+20
*
*
*
DRAW LDX NUM
LDA SHPL,X
STA SH
LDA SHPH,X
STA SH+1
LDX DRAWX
LDY DRAWY
DRAW0 STX HORZ
STY VERT
LDY #0
LDX #0
LDA (SH),Y
STA WIDT
STA TEMP
INY
LDA (SH),Y
STA DEPT
INC SH
INC SH
DRAW1 JSR GET
JMP DRAW2
GET LDY VERT
LDA $6000,Y
STA HP+1
LDA $6100,Y
CLC
ADC HORZ
STA HP
LDY #0
RTS
DRAW2 LDA (SH,X)
EOR (HP),Y
STA (HP),Y
INC SH
INY
DEC WIDT
BNE DRAW2
LDA TEMP
STA WIDT
INC VERT
DEC DEPT
BNE DRAW1
RTS
BXDRAW JSR BSETUP
JMP DRAW0
BSETUP STX TEMP
TAX
LDA SHPL,X
STA SH
LDA SHPH,X
STA SH+1
LDX TEMP
RTS
SHPL HEX 000C18202830384E
HEX 586266788A9C0000
SHPH HEX 4040404040404040
HEX 4040404040404040
*
* THE GAME STARTS HERE
*
LDA #19
STA X
LDA #70
STA Y
LDA #$4C
STA SCLR
LDA #<SCLEAR
STA SCLR+1
LDA #>SCLEAR
STA SCLR+2
*
LDA #0
STA FIRE
STA SHAPE
STA OSHAPE
STA XV
STA YV
STA ET1
STA RCODE
STA CYCLES
*
LDX #19
LOOP STA SHALIVE,X
STA SHXV,X
DEX
BPL LOOP
*
JSR PCITIES
JSR PSCOR
LDA #1
STA AL
STA STIMER
BIT $C010
BIT -16301
*
MAIN JSR CONT
JSR JOY:X
JSR SCROLL
JSR PMOVE
*
MAIN:0 JSR M:MOVE
JSR C:MOVE
JSR SAT:MOVE
JSR BEAM:MOVE
JSR BOMB:MOVE
JSR SHOT
JSR JOY:Y
JSR BUTTON
JSR STARS
*
JSR SHOT?ALIEN
JSR ALIEN?SHIP
JSR BEAM?SHIP
JSR INCITY?
JSR CITY?ALIEN
JSR BOMB?CITY
JSR SHOT?BOMB
JSR ENDGAME?
JSR SAFE?
JSR HURT?
*
JSR EX:ALIEN
JSR EX:SHIP
JSR EX:CITY
JSR EX:BOMB
*
LDA WAIT
JSR $FCA8
LDA RCODE
BEQ MAIN
RTS
*
CONT LDA AL
BNE CONT:0
RTS
CONT:0 LDA $C000
BPL CONT:END
BIT $C010
LDY KORJ
CPY #"J"
BNE CONT:0A
JMP CONT:5
CONT:0A CMP KUP
BNE CONT:1
LDA YV
SEC
SBC #1
STA YV
BPL CONT:END
CMP #251
BCS CONT:END
LDA #251
STA YV
RTS
CONT:1 CMP KDN
BNE CONT:2
LDA YV
CLC
ADC #1
STA YV
BMI CONT:END
CMP #6
BCC CONT:END
LDA #5
STA YV
RTS
CONT:2 CMP KLF
BNE CONT:3
CONT:2A LDA XV
SEC
SBC #1
STA XV
BPL CONT:END
CMP #255
BCS CONT:END
LDA #255
STA XV
CONT:END RTS
CONT:3 CMP KRT
BNE CONT:4
CONT:3A LDA XV
CLC
ADC #1
STA XV
BMI CONT:END
CMP #2
BCC CONT:END
LDA #1
STA XV
RTS
CONT:4 CMP KFI
BNE CONT:5
LDA #1
STA FIRE
BIT $C010
RTS
CONT:5 CMP #155
BNE CONT:6
BIT $C010
CONT:5A LDA $C000
BPL CONT:5A
CMP #155
BEQ CONT:END
BIT $C010
RTS
CONT:6 CMP #147
BNE CONT:7
BIT $C010
LDA CTRLS
BNE CONT:6A
LDA #1
STA CTRLS
RTS
CONT:6A LDA #0
STA CTRLS
RTS
CONT:7 CMP #145
BNE CONT:END
LDA #4
STA RCODE
RTS
*
*
*
PMOVE LDA AL
BNE PMOVE0
RTS
PMOVE0 LDA SHAPE
STA OSHAPE
LDX X
LDY Y
LDA OSHAPE
JSR BXDRAW
*
LDA XV
CMP #255
BNE PM:0
LDA #0
STA SHAPE
BEQ PM:00
PM:0 LDA XV
CMP #1
BNE PM:00
STA SHAPE
*
PM:00 LDA Y
CLC
ADC YV
STA Y
CMP #5
BCS PM:1
LDA #5
STA Y
LDA #0
STA YV
BNE PM:4
PM:1 CMP #140
BCC PM:4
LDA #139
STA Y
LDA #0
STA YV
*
PM:4 LDX X
LDY Y
LDA SHAPE
JMP BXDRAW
*
*
*
M:MOVE LDA #19
STA INDEX
M:M LDX INDEX
LDA ALIVE,X
BNE M:M1
M:M0 DEC INDEX
BPL M:M
RTS
*
M:M1 LDA MX,X
CMP #40
BCS M:M2
LDA MSHP,X
PHA
LDY MY,X
LDA MX,X
TAX
PLA
JSR BXDRAW
LDX INDEX
*
M:M2 LDA XV
CMP #255
BNE M:M3
LDA MX,X
CLC
ADC #1
STA MX,X
JMP M:M4
M:M3 CMP #1
BNE M:M4
LDA MX,X
SEC
SBC #1
STA MX,X
M:M4 LDA MX,X
CLC
ADC MXV,X
STA MX,X
*
LDA MY,X
CLC
ADC MYV,X
STA MY,X
CMP #5
BCS M:M5
LDA #5
STA MY,X
JSR FLIPY
JMP M:M6
M:M5 CMP #133
BCC M:M6
LDA #133
STA MY,X
JSR FLIPY
*
M:M6 DEC TIMER,X
BNE M:M7
JSR FLIPY
LDA TTEMP,X
STA TIMER,X
DEC XTIMER,X
BNE M:M7
LDA XTTEMP,X
STA XTIMER,X
JSR FLIPX
M:M7 LDA MX,X
CMP #40
BCS M:M8
LDY #8
JSR SOUND
LDA MSHP,X
PHA
LDY MY,X
LDA MX,X
TAX
PLA
JSR BXDRAW
M:M8 JMP M:M0
FLIPY LDA MYV,X
BMI FLIPY:1
LDA #0
SEC
SBC MYV,X
STA MYV,X
RTS
FLIPY:1 LDA MYV,X
EOR #$FF
CLC
ADC #1
STA MYV,X
RTS
FLIPX LDA MXV,X
BMI FLIPX:1
LDA #255
STA MXV,X
RTS
FLIPX:1 LDA #1
STA MXV,X
RTS
*
*
*
SCROLL LDA AL
BNE SCR
RTS
SCR LDA #145
STA VERT
LDA #10
STA DEPT
LDA #0
STA HORZ
LDA XV
BMI SCRIGHT
BNE SCRLEFT
LDA #10
JMP $FCA8
SCRIGHT JSR GET
LDY #39
LDA (HP),Y
PHA
SCRT2 DEY
LDA (HP),Y
INY
STA (HP),Y
DEY
BNE SCRT2
PLA
STA (HP),Y
INC VERT
DEC DEPT
BNE SCRIGHT
RTS
SCRLEFT JSR GET
SCRL1 LDY #0
LDA (HP),Y
PHA
SCRL2 INY
LDA (HP),Y
DEY
STA (HP),Y
INY
CPY #39
BNE SCRL2
PLA
STA (HP),Y
INC VERT
DEC DEPT
BNE SCRLEFT
RTS
*
*
*
C:MOVE LDA AL
BNE C:M0
RTS
C:M0 LDA #9
STA INDEX
C:M1 LDX INDEX
LDA CALIVE,X
BNE C:M3
C:M2 DEC INDEX
BPL C:M1
RTS
C:M3 LDA CX,X
CMP #39
BCS C:M4
LDY #134
LDA CX,X
TAX
LDA #6
JSR BXDRAW
LDX INDEX
*
C:M4 LDA XV
BEQ C:M5
LDA CX,X
SEC
SBC XV
STA CX,X
C:M5 LDA CX,X
CMP #39
BCS C:M2
LDY #134
LDA CX,X
TAX
LDA #6
JSR BXDRAW
JMP C:M2
*
*
*
SAT:MOVE LDA AL
BNE SAT:M0
RTS
SAT:M0 LDA #9
STA INDEX
SAT:M1 LDX INDEX
LDA SALIVE,X
BNE SAT:M3
SAT:M2 DEC INDEX
BPL SAT:M1
RTS
SAT:M3 JSR BEAM:START
LDA SX,X
CMP #40
BCS SAT:M4
LDY #0
TAX
LDA #7
JSR BXDRAW
LDX INDEX
LDA SX,X
TAX
LDY #136
LDA #8
JSR BXDRAW
LDX INDEX
SAT:M4 LDA XV
BEQ SAT:M5
LDA SX,X
SEC
SBC XV
STA SX,X
SAT:M5 LDA SX,X
CMP #40
BCS SAT:M2
LDY #0
TAX
LDA #7
JSR BXDRAW
LDX INDEX
LDA SX,X
TAX
LDY #136
LDA #8
JSR BXDRAW
JMP SAT:M2
*
*
*
BEAM:START
LDA BT,X
BEQ BEAM:S0
RTS
BEAM:S0 DEC ST,X
BEQ BEAM:S1
RTS
BEAM:S1 LDA #100
STA BT,X
LDA SX,X
STA BX,X
CMP #40
BCC BEAM:S2
RTS
BEAM:S2 STA HORZ
LDA #10
STA VERT
LDA #124
STA DEPT
BEAM:S3 JSR GET
LDA #%10101010
EOR (HP),Y
STA (HP),Y
INC VERT
DEC DEPT
BNE BEAM:S3
RTS
*
*
*
BEAM:MOVE
LDA AL
BNE BEAM:M0
RTS
BEAM:M0 LDA #9
STA INDEX
BEAM:M1 LDX INDEX
LDA BT,X
BNE BEAM:M3
BEAM:M2 DEC INDEX
BPL BEAM:M1
RTS
BEAM:M3 LDA BX,X
CMP #40
BCS BEAM:M4
JSR BEAM:S2
BEAM:M4 LDA XV
BEQ BEAM:M5
LDA BX,X
SEC
SBC XV
STA BX,X
BEAM:M5 DEC BT,X
BNE BEAM:M6
JMP BEAM:M2
BEAM:M6 LDA BX,X
CMP #40
BCS BEAM:M2
JSR BEAM:S2
LDA #4
LDY #8
JSR SOUND
JMP BEAM:M2
*
*
*
SOUND PHA
LDA CTRLS
BEQ S3
S1 PLA
PHA
S2 SEC
SBC #1
BNE S2
BIT $C030
DEY
BNE S1
S3 PLA
RTS
*
*
*
SHOT LDA AL
BNE SHOT:00
BEQ SHOT:1
SHOT:00 LDA FIRE
BEQ SHOT:1
LDX #19
SHOT:0 LDA SHALIVE,X
BEQ SHOT:0A
DEX
BPL SHOT:0
BMI SHOT:1
SHOT:0A LDA SHAPE
BEQ SHOT:0B
LDA X
CLC
ADC #2
STA SHX,X
LDA #1
STA SHXV,X
BNE SHOT:0C
SHOT:0B LDA X
SEC
SBC #1
STA SHX,X
LDA #255
STA SHXV,X
SHOT:0C LDA #1
STA SHALIVE,X
LDA Y
CLC
ADC #3
STA SHY,X
TAY
LDA SHX,X
TAX
LDA #9
JSR BXDRAW
LDA #0
STA FIRE
LDA #10
LDY #10
JSR SOUND
SHOT:1 LDA #19
STA INDEX
SHOT:1A LDX INDEX
LDA SHALIVE,X
BEQ SHOT:2A
LDA SHX,X
LDY SHY,X
TAX
LDA #9
JSR BXDRAW
LDX INDEX
LDA SHX,X
CLC
ADC SHXV,X
STA SHX,X
CMP #40
BCC SHOT:3
LDA #0
STA SHALIVE,X
SHOT:2A DEC INDEX
BPL SHOT:1A
RTS
SHOT:3 LDY SHY,X
TAX
LDA #9
JSR BXDRAW
JMP SHOT:2A
*
*
*
SHOT?ALIEN
LDA #19
STA INDEX
SH?A1 LDX INDEX
LDA ALIVE,X
BNE SH?A3
SH?A2 DEC INDEX
BPL SH?A1
RTS
SH?A3 LDY INDEX
LDA #19
STA INDEX1
SH?A4 LDX INDEX1
LDA SHALIVE,X
BNE SH?A6
SH?A5 DEC INDEX1
BPL SH?A4
BMI SH?A2
SH?A6 LDA SHX,X
CMP MX,Y
BNE SH?A5
LDA SHY,X
SEC
SBC MY,Y
CMP #8
BCC SH?A7
CMP #255
BCC SH?A5
SH?A7 LDA #0
STA SHALIVE,X
LDY SHY,X
LDA SHX,X
TAX
LDA #9
JSR BXDRAW
*
* ERASE ALIEN
*
LDX INDEX
LDA #0
STA ALIVE,X
LDA #20
STA MET1,X
LDY MY,X
TYA
STA MEY,X
LDA MSHP,X
PHA
LDA MX,X
STA MEX,X
TAX
PLA
JSR BXDRAW
*
* SET UP EXPLO NOISE
*
LDA #30
LDY #40
JSR SOUND
JSR APOINTS
JMP SH?A2
*
*
*
EX:ALIEN LDA #19
STA INDEX
EX:A1 LDX INDEX
LDA MET1,X
BNE EX:A3
EX:A2 DEC INDEX
BPL EX:A1
RTS
EX:A3 CMP #20
BCC EX:A4
LDA #10
STA MESHP,X
JSR BEXDRAW
LDX INDEX
DEC MET1,X
EX:A4 JSR BEXDRAW
JSR EX:MOVE
INC MESHP,X
LDA MESHP,X
CMP #13
BEQ EX:A5
JSR BEXDRAW
JMP EX:A2
EX:A5 LDA #10
STA MESHP,X
JSR BEXDRAW
DEC MET1,X
BEQ EX:A6
JMP EX:A2
EX:A6 JSR BEXDRAW
JMP EX:A2
*
BEXDRAW LDX INDEX
LDY MEY,X
LDA MESHP,X
PHA
LDA MEX,X
TAX
PLA
CPX #39
BCS BEXDR
JSR BXDRAW
LDX INDEX
LDA MESHP,X
LDY #8
JSR SOUND
BEXDR LDX INDEX
RTS
*
EX:MOVE LDX INDEX
LDA AL
BNE EX:MO0
RTS
EX:MO0 LDA XV
BNE EX:MO1
RTS
EX:MO1 LDA MEX,X
SEC
SBC XV
STA MEX,X
RTS
*
*
*
EX:SHIP LDA ET1
BNE EX:S1
RTS
EX:S1 CMP #20
BCC EX:S2
LDA #10
STA ESHP
JSR BPDRAW
DEC ET1
EX:S2 JSR BPDRAW
INC ESHP
LDA ESHP
CMP #13
BEQ EX:S3
JMP BPDRAW
EX:S3 LDA #10
STA ESHP
JSR BPDRAW
DEC ET1
BEQ EX:S4
RTS
EX:S4 JSR BPDRAW
LDA #1
STA RCODE
RTS
BPDRAW LDA ESHP
ASL
LDY #10
JSR SOUND
LDX EX
LDY EY
LDA ESHP
JMP BXDRAW
*
*
*
ALIEN?SHIP
LDA AL
BNE AL?SH0
RTS
AL?SH0 LDA #19
STA INDEX
AL?SH1 LDX INDEX
LDA ALIVE,X
BNE AL?SH3
AL?SH2 DEC INDEX
BPL AL?SH1
RTS
AL?SH3 LDA MX,X
CMP X
BEQ AL?SH3A
LDA X
CLC
ADC #1
CMP MX,X
BNE AL?SH2
AL?SH3A LDA MY,X
SEC
SBC Y
CMP #5
BCC AL?SH4
CMP #250
BCC AL?SH2
AL?SH4 LDA #0
STA AL
STA XV
STA YV
LDA SHAPE
LDX X
LDY Y
STX EX
STY EY
JSR BXDRAW
LDA #20
STA ET1
RTS
*
*
*
BEAM?SHIP
LDA AL
BNE BM?SH0
RTS
BM?SH0 LDA #9
STA INDEX
BM?SH1 LDX INDEX
LDA BT,X
BNE BM?SH3
BM?SH2 DEC INDEX
BPL BM?SH1
RTS
BM?SH3 LDA X
CMP BX,X
BEQ BM?SH4
LDA X
CLC
ADC #1
CMP BX,X
BNE BM?SH2
BM?SH4 JSR BEAM:S2
LDX INDEX
LDA #0
STA BT,X
JMP AL?SH4
*
*
*
INCITY? LDX #9
IN:CI1 LDA CALIVE,X
BEQ IN:CI1A
LDA CX,X
CMP X
BEQ IN:CI2
IN:CI1A DEX
BPL IN:CI1
RTS
IN:CI2 LDA Y
CMP #136
BCC IN:CI1A
LDX #19
IN:CI3 LDA ALIVE,X
BEQ IN:CI4
LDA CYC1
BNE IN:CI3A
LDA CYCLES
BNE IN:CI3A
JMP NOTSAFE
IN:CI3A RTS
IN:CI4 DEX
BPL IN:CI3
LDA #2
STA RCODE
LDA #100
TAY
JSR SOUND
JMP SOUND
*
*
*
STARS LDA #49
STA INDEX
LDA #0
STA HORZ
STAR:1 LDX INDEX
LDA STY,X
STA VERT
JSR GET
LDA STX,X
TAX
LDA $4100,X
LDY $4200,X
EOR (HP),Y
STA (HP),Y
*
LDX INDEX
LDA XV
BEQ STAR:2
LDA STX,X
SEC
SBC XV
STA STX,X
STAR:2 LDA STX,X
TAX
LDA $4100,X
LDY $4200,X
EOR (HP),Y
STA (HP),Y
DEC INDEX
BPL STAR:1
RTS
*
*
*
CITY?ALIEN
LDA #9
STA INDEX
CI?AL1 LDX INDEX
LDA CALIVE,X
BNE CI?AL3
CI?AL2 DEC INDEX
BPL CI?AL1
RTS
CI?AL3 LDY INDEX
LDA #19
STA INDEX1
CI?AL4 LDX INDEX1
LDA ALIVE,X
BNE CI?AL6
CI?AL5 DEC INDEX1
BPL CI?AL4
BMI CI?AL2
CI?AL6 LDA MX,X
CMP CX,Y
BEQ CI?AL7
LDA CX,Y
CLC
ADC #1
CMP MX,X
BNE CI?AL5
CI?AL7 LDA MY,X
CMP #130
BCS CI?AL8
BCC CI?AL5
CI?AL8 LDX INDEX
LDA #0
STA CALIVE,X
LDA #20
STA CET1,X
*
SED
LDA CITIES
SEC
SBC #1
STA CITIES
CLD
JSR PCITIES
JSR SNAG
*
LDX INDEX
LDY #134
LDA CX,X
STA CEX,X
TAX
LDA #6
CPX #39
BCS CI?AL9
JSR BXDRAW
CI?AL9 LDX INDEX1
LDA #0
STA ALIVE,X
LDA #20
STA MET1,X
LDY MY,X
TYA
STA MEY,X
LDA MSHP,X
PHA
LDA MX,X
STA MEX,X
TAX
PLA
CPX #40
BCS CI?AL10
JSR BXDRAW
CI?AL10 JMP CI?AL2
*
*
*
EX:CITY LDA #9
STA INDEX
EX:CI1 LDX INDEX
LDA CET1,X
BNE EX:CI3
EX:CI2 DEC INDEX
BPL EX:CI1
RTS
EX:CI3 CMP #20
BNE EX:CI4
LDA #10
STA CESHP,X
JSR BCDRAW
DEC CET1,X
EX:CI4 JSR BCDRAW
JSR EX:CMOVE
INC CESHP,X
LDA CESHP,X
CMP #13
BEQ EX:CI5
JSR BCDRAW
JMP EX:CI2
EX:CI5 LDA #10
STA CESHP,X
DEC CET1,X
BEQ EX:CI2
JSR BCDRAW
JMP EX:CI2
EX:CMOVE LDA AL
BNE EX:CM0
RTS
EX:CM0 LDA XV
BEQ EX:CM1
LDA CEX,X
SEC
SBC XV
STA CEX,X
EX:CM1 RTS
BCDRAW LDX INDEX
*
LDA CESHP,X
ASL
ASL
LDY #6
JSR SOUND
LDA #20
LDY #6
JSR SOUND
*
LDY #134
LDA CESHP,X
PHA
LDA CEX,X
TAX
PLA
CPX #39
BCS BCDRAW1
JSR BXDRAW
BCDRAW1 LDX INDEX
RTS
*
*
*
PCITIES LDX #7
LDY #21
JSR TABS
LDA CITIES
CMP #10
BCS PC:1
LDX #8
LDY #21
JSR TABS
LDA CITIES
JMP $FDE3
PC:1 JMP $FDDA
*
*
*
TABS STX $24
STY $25
JMP $FC22
*
*
*
PSCOR LDX #26
LDY #20
JSR TABS
LDA SCOR2
JSR $FDDA
LDA SCOR1
JSR $FDDA
LDA SCOR0
JMP $FDDA
*
*
*
APOINTS LDX LEVEL
AP:1 SED
LDA SCOR0
CLC
ADC #$10
STA SCOR0
BCC AP:2
LDA SCOR1
CLC
ADC #1
STA SCOR1
BCC AP:2
LDA SCOR2
CLC
ADC #1
STA SCOR2
AP:2 CLD
DEX
BNE AP:1
JMP PSCOR
*
*
*
ENDGAME? LDA CITIES
BEQ END:1
RTS
END:1 LDX #19
END:2 LDA ALIVE,X
BNE END:3
DEX
BPL END:2
LDA #3
STA RCODE
END:3 RTS
*
*
*
NOTSAFE LDX #0
LDY #22
JSR TABS
LDA #15
STA CYCLES
LDA #10
LDY #150
JSR SOUND
LDX #<NOT
LDY #>NOT
JMP PRINT
NOT ASC "IT'S NOT SAFE YET!"
HEX 00
*
*
*
PRINT STX 0
STY 1
LDY #0
PRINT:1 LDA (0),Y
BEQ PRINT:2
JSR $FDED
INC 0
BNE PRINT:1
INC 1
BNE PRINT:1
PRINT:2 RTS
*
*
*
SAFE? LDA CYCLES
BNE SAFE?:1
RTS
SAFE?:1 DEC CYCLES
BEQ SAFE?:2
RTS
SAFE?:2 LDX #0
LDY #22
JSR TABS
LDX #<SPC
LDY #>SPC
JMP PRINT
SPC ASC " "
HEX 00
*
*
*
HURT? LDA CYC1
BNE HURT?:1
RTS
HURT?:1 DEC CYC1
BEQ HURT?:2
RTS
HURT?:2 JMP SAFE?:2
*
*
*
SNAG LDX #0
LDY #22
JSR TABS
LDA #25
STA CYC1
LDX #<SNG
LDY #>SNG
JMP PRINT
SNG ASC "AARRGG! A THOUSAND SOULS CRY OUT.."
HEX 00
*
*
*
SCLEAR LDA #160
STA VERT
LDA #161
STA DEPT
LDA #0
STA HORZ
SCLR:1 JSR GET
LDY #39
LDA #0
SCLR:2 STA (HP),Y
DEY
BPL SCLR:2
LDA VERT
LDY #4
JSR SOUND
LDA #161
SEC
SBC VERT
LDY #4
JSR SOUND
DEC VERT
DEC DEPT
BNE SCLR:1
RTS
*
*
*
BOMB:MOVE
LDA LEVEL
CMP #20
BCS BOM:1
RTS
BOM:1 LDA #19
STA INDEX
BOM:2 LDX INDEX
LDA BON,X
BNE BOM:4
LDA BET1,X
BNE BOM:3
LDA ALIVE,X
BEQ BOM:3
LDA MX,X
CMP #40
BCC BOM:2A
BCS BOM:3
BOM:2A LDY INDEX
LDA #9
STA INDEX1
BOM:2B LDX INDEX1
LDA CALIVE,X
BEQ BOM:2B0
LDA CX,X
CMP MX,Y
BEQ BOM:2C
BOM:2B0 DEC INDEX1
BPL BOM:2B
BOM:3 DEC INDEX
BPL BOM:2
RTS
BOM:2C LDA #1
STA BON,Y
LDA MX,Y
TAX
STA BOMX,Y
LDA MY,Y
STA BOMY,Y
TAY
LDA #13
JSR BXDRAW
LDX INDEX
BOM:4 LDY BOMY,X
LDA BOMX,X
TAX
LDA #13
CPX #40
BCS BOM:4A
JSR BXDRAW
BOM:4A LDX INDEX
LDA XV
BEQ BOM:5
LDA BOMX,X
SEC
SBC XV
STA BOMX,X
BOM:5 LDA BOMY,X
CLC
ADC #2
STA BOMY,X
CMP #134
BCC BOM:6
STA BEY,X
LDA #0
STA BON,X
LDA BOMX,X
STA BEX,X
LDA #20
STA BET1,X
JMP BOM:3
BOM:6 LDY BOMY,X
LDA BOMX,X
TAX
LDA #13
CPX #40
BCS BOM:6A
JSR BXDRAW
BOM:6A JMP BOM:3
*
*
*
EX:BOMB LDA #19
STA INDEX
EX:BOM1 LDX INDEX
LDA BET1,X
BNE EX:BOM3
EX:BOM2 DEC INDEX
BPL EX:BOM1
RTS
EX:BOM3 CMP #20
BCC EX:BOM4
LDA #10
STA BESHP,X
JSR BBDRAW
LDX INDEX
DEC BET1,X
EX:BOM4 JSR BBDRAW
JSR BBMOVE
INC BESHP,X
LDA BESHP,X
CMP #13
BEQ EX:BOM5
JSR BBDRAW
JMP EX:BOM2
EX:BOM5 LDA #10
STA BESHP,X
JSR BBDRAW
DEC BET1,X
BEQ EX:BOM6
JMP EX:BOM2
EX:BOM6 JSR BBDRAW
JMP EX:BOM2
BBDRAW LDX INDEX
LDY BEY,X
LDA BESHP,X
PHA
LDA BEX,X
TAX
PLA
CPX #39
BCS BBDR
JSR BXDRAW
LDX INDEX
LDA BESHP,X
LDY #15
JSR SOUND
BBDR LDX INDEX
RTS
BBMOVE LDX INDEX
LDA AL
BNE BB:MO0
RTS
BB:MO0 LDA XV
BNE BB:MO1
RTS
BB:MO1 LDA BEX,X
SEC
SBC XV
STA BEX,X
RTS
*
*
*
BOMB?CITY
LDA #19
STA INDEX
BOM?C1 LDX INDEX
LDA BON,X
BNE BOM?C3
BOM?C2 DEC INDEX
BPL BOM?C1
RTS
BOM?C3 LDA BOMY,X
CMP #130
BCC BOM?C2
LDY INDEX
LDA #9
STA INDEX1
BOM?C4 LDX INDEX1
LDA CALIVE,X
BNE BOM?C6
BOM?C5 DEC INDEX1
BPL BOM?C4
BMI BOM?C2
BOM?C6 LDA BOMX,Y
CMP CX,X
BEQ BOM?C7
CLC
ADC #1
CMP CX,X
BNE BOM?C5
BOM?C7 LDA #0
STA CALIVE,X
LDA #20
STA CET1,X
LDY #134
LDA CX,X
STA CEX,X
TAX
CPX #39
BCS BOM?C8
LDA #6
JSR BXDRAW
BOM?C8 SED
LDA CITIES
SEC
SBC #1
STA CITIES
CLD
JSR PCITIES
JSR SNAG
JMP BOM?C2
*
*
*
SHOT?BOMB
LDA #19
STA INDEX
SH?B1 LDX INDEX
LDA SHALIVE,X
BNE SH?B3
SH?B2 DEC INDEX
BPL SH?B1
RTS
SH?B3 LDY INDEX
LDA #19
STA INDEX1
SH?B4 LDX INDEX1
LDA BON,X
BNE SH?B5
SH?B4A DEC INDEX1
BPL SH?B4
BMI SH?B2
SH?B5 LDA SHX,Y
CMP BOMX,X
BNE SH?B4A
LDA SHY,Y
SEC
SBC BOMY,X
CMP #5
BCC SH?B6
CMP #253
BCC SH?B4A
SH?B6 LDA #0
STA BON,X
LDA #20
STA BET1,X
LDA BOMY,X
STA BEY,X
TAY
LDA BOMX,X
STA BEX,X
TAX
LDA #13
JSR BXDRAW
JSR APOINTS
JMP SH?B2
*
*
*
JOY:X LDA AL
BEQ JOY:X0
LDA KORJ
CMP #"K"
BEQ JOY:X0
LDX #0
JSR $FB1E
CPY #90
BCC JOY:X1
CPY #140
BCS JOY:X2
LDA #0
STA XV
JOY:X0 RTS
JOY:X1 JMP CONT:2A
JOY:X2 JMP CONT:3A
*
*
*
JOY:Y LDA AL
BEQ JOY:X0
LDA KORJ
CMP #"K"
BEQ JOY:X0
LDX #1
JSR $FB1E
CPY #55
BCC JOY:Y1
CPY #250
BCS JOY:Y2
LDA #0
STA YV
RTS
JOY:Y1 LDA #253
STA YV
RTS
JOY:Y2 LDA #3
STA YV
RTS
*
*
*
BUTTON LDA KORJ
CMP #"K"
BEQ BUTN:1
BIT $C061
BPL BUTN:1
DEC STIMER
BNE BUTN:1
LDA #1
STA FIRE
LDA #2
STA STIMER
BUTN:1 RTS